#!/bin/bash

# 确保环境正确
if [ -z "$(go env GOROOT)" ]; then
  echo "错误: Go 环境未正确设置"
  exit 1
fi

# 创建输出目录
mkdir -p ../public

# 编译 Go 代码为 WebAssembly
echo "正在编译 ProtoActor-Go WASM 模块..."
GOOS=js GOARCH=wasm go build -o ../public/protoactor.wasm .

# 查找 wasm_exec.js 文件
WASM_EXEC_JS=""
POSSIBLE_PATHS=(
  "$(go env GOROOT)/misc/wasm/wasm_exec.js"
  "$(go env GOROOT)/lib/wasm/wasm_exec.js"
  "/usr/local/go/misc/wasm/wasm_exec.js"
  "/opt/homebrew/Cellar/go/*/libexec/lib/wasm/wasm_exec.js"
  "/usr/lib/go/misc/wasm/wasm_exec.js"
)

for path in "${POSSIBLE_PATHS[@]}"; do
  FOUND_PATH=$(ls $path 2>/dev/null | head -n 1)
  if [ -n "$FOUND_PATH" ]; then
    WASM_EXEC_JS="$FOUND_PATH"
    echo "找到 wasm_exec.js 在: $WASM_EXEC_JS"
    break
  fi
done

if [ ! -f "$WASM_EXEC_JS" ]; then
  echo "错误: 无法找到 wasm_exec.js 文件，请手动复制该文件到 ../public/ 目录"
  echo "通常该文件位于 Go 安装目录的 misc/wasm/ 或 lib/wasm/ 子目录中"
  exit 1
fi

# 复制 WASM 执行环境
echo "复制 WASM 执行环境..."
cp "$WASM_EXEC_JS" ../public/

echo "编译完成！WebAssembly 文件已生成到 ../public/ 目录"
echo "  - protoactor.wasm: ProtoActor Go WASM 模块"
echo "  - wasm_exec.js: WASM 执行环境"
echo ""
echo "在 TypeScript 中使用这些文件，请确保:"
echo "1. 将文件复制到你的 Web 服务器目录"
echo "2. 在 HTML 中加载 wasm_exec.js"
echo "3. 使用 WasmBridge 加载 protoactor.wasm" 